/**
 * Classe correspondante à une page de recherche sur un site
 *
 * @param {Array} items la liste des objets d'info (ItemWebsite)
 * @param {Array} pages la liste des pages (PageURL)
 * @param {PageURL} nextPage la prochaine page à parser
 * @param {int} totalPages le nombre de total de pages
 */
function WebsitePage(items, pages, nextPage, totalPages)
{
	
	var _nextPage;
	var _pages;
	var _items;
	
	var _totalPages;
	
	var _pageIndex;

    /**
     * Constructeur de la classe
     *
     * Initialise la page du site
     * 
     * @param {Array} items la liste des objets d'info (ItemWebsite)
     * @param {Array} pages la liste des pages (PageURL)
     * @param {PageURL} nextPage la prochaine page à parser
     * @param {int} totalPages le nombre de total de pages
     */
	function _construct(items, pages, nextPage, totalPages)
	{
		_nextPage = nextPage;
		_items = items;
		_pages = pages;
		
		_totalPages = totalPages;
	}

    /**
     * Renvoie la liste des objets de la page
     *
     * @return {Array} la liste des objets
     */
	this.getItems = function() { return _items; }

    /**
     * Renvoie la prochaine page PageURL
     *
     * @return {PageURL} la prochaine page à parser
     */
	this.getNextPage = function() { return _nextPage; }

    /**
     * Renvoie les prochaines pages disponibles
     *
     * @return {Array} la liste de PageURL disponible dans la page courante
     */
	this.getPages = function() { return _pages; }

    /**
     * Permet de savoir si une prochaine page est disponible
     *
     * @return {boolean} true s'il y en a encore une, false sinon
     */
	this.haveNextPage = function() { 
		if (!_nextPage) 
			return false
		else
			return true;
	}

    /**
     * Renvoie le nombre de pages disponibles
     *
     * @return {int} le nombre de pages
     */
	this.getTotalPages = function() { return _totalPages; }

    /**
     * Renvoie le nombre d'objets disponibles
     *
     * @return {int} le nombre d'objets
     */
	this.getTotalItems = function() { return _items.length; }

    /**
     * Met à jour l'index de la page courante
     *
     * @param {int} pageIndex la page d'index
     */
	this.setPageIndex = function(pageIndex) { _pageIndex = pageIndex; }

    /**
     * Renvoie l'index de la page courante
     *
     * @return {int} l'index de la page
     */
	this.getPageIndex = function() { return _pageIndex; }
	
	_construct(items, pages, nextPage, totalPages)
}
